# -*- coding= utf-8 -*-

#关于这个接口，一直有疑惑，今天通过一个非常简单的例子简单理解了一下。
#
#    原型：tf.nn.embedding_lookup(params, ids, partition_strategy='mod', name=None, validate_indices=True, max_norm=None)
#    在网上搜会发现基本都是假设ids只有一行，但是假如ids有若干行，会怎样？
#
#作者：fanbo
#链接：http://www.jianshu.com/p/ad88a0afa98f


import tensorflow as tf
import numpy as np

a = [[0.1, 0.2, 0.3], [1.1, 1.2, 1.3], [2.1, 2.2, 2.3], [3.1, 3.2, 3.3], [4.1, 4.2, 4.3]] 
a = np.asarray(a) 
idx1 = tf.Variable([0, 2, 3, 1], tf.int32) 
idx2 = tf.Variable([[0, 2, 3, 1], [4, 0, 2, 2]], tf.int32) 
out1 = tf.nn.embedding_lookup(a, idx1) 
out2 = tf.nn.embedding_lookup(a, idx2) 
init = tf.global_variables_initializer() 
with tf.Session() as sess:
      sess.run(init)
      print( sess.run(out1) )
      print( out1 )
      print( '==================' )
      print( sess.run(out2) )
      print( out2)
